home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…on Library 1994 September / ARPLE-Sept-94-Supplement.iso / AppleSoft / QuickTime 2.0 / Interfaces / Movies.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-20  |  69.4 KB  |  1,750 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Movies.h
  3.  
  4.     Copyright:    © 1991-1994 by Apple Computer, Inc., all rights reserved.
  5.  
  6. */
  7.  
  8. #ifndef __MOVIES__
  9. #define __MOVIES__
  10.  
  11. #ifndef __QUICKDRAW__
  12. #include <Quickdraw.h>
  13. /*    #include <Types.h>                                            */
  14. /*        #include <ConditionalMacros.h>                            */
  15. /*        #include <MixedMode.h>                                    */
  16. /*            #include <Traps.h>                                    */
  17. /*    #include <QuickdrawText.h>                                    */
  18. /*        #include <IntlResources.h>                                */
  19. #endif
  20.  
  21. #ifndef __ALIASES__
  22. #include <Aliases.h>
  23. /*    #include <AppleTalk.h>                                        */
  24. /*        #include <OSUtils.h>                                    */
  25. /*    #include <Files.h>                                            */
  26. /*        #include <SegLoad.h>                                    */
  27. #endif
  28.  
  29. #ifndef __EVENTS__
  30. #include <Events.h>
  31. #endif
  32.  
  33. #ifndef __TOOLUTILS__
  34. #include <ToolUtils.h>
  35. /*    #include <TextUtils.h>                                        */
  36. /*        #include <Script.h>                                        */
  37. /*    #include <FixMath.h>                                        */
  38. #endif
  39.  
  40. #ifndef __MENUS__
  41. #include <Menus.h>
  42. #endif
  43.  
  44. #ifndef __COMPONENTS__
  45. #include <Components.h>
  46. #endif
  47.  
  48. #ifndef __IMAGECOMPRESSION__
  49. #include <ImageCompression.h>
  50. /*    #include <QDOffscreen.h>                                    */
  51. /*    #include <StandardFile.h>                                    */
  52. /*        #include <Dialogs.h>                                    */
  53. /*            #include <Windows.h>                                */
  54. /*                #include <Controls.h>                            */
  55. /*            #include <TextEdit.h>                                */
  56. #endif
  57.  
  58. #ifndef kFix1
  59. #define kFix1 (0x00010000)
  60.  
  61. #endif
  62.  
  63. #define MovieFileType 'MooV'
  64.  
  65. #define MediaHandlerType 'mhlr'
  66.  
  67. #define DataHandlerType 'dhlr'
  68.  
  69. #define VideoMediaType 'vide'
  70.  
  71. #define SoundMediaType 'soun'
  72.  
  73. #define TextMediaType 'text'
  74.  
  75. #define BaseMediaType 'gnrc'
  76.  
  77. #define VisualMediaCharacteristic 'eyes'
  78.  
  79. #define AudioMediaCharacteristic 'ears'
  80.  
  81. #define DoTheRightThing 0L
  82.  
  83. #if defined(powerc) || defined (__powerc)
  84. #pragma options align=mac68k
  85. #endif
  86. struct MovieRecord {
  87.     long                        data[1];
  88. };
  89. #if defined(powerc) || defined(__powerc)
  90. #pragma options align=reset
  91. #endif
  92.  
  93. typedef struct MovieRecord MovieRecord;
  94.  
  95. typedef MovieRecord *Movie;
  96.  
  97. #if defined(powerc) || defined (__powerc)
  98. #pragma options align=mac68k
  99. #endif
  100. struct TrackRecord {
  101.     long                        data[1];
  102. };
  103. #if defined(powerc) || defined(__powerc)
  104. #pragma options align=reset
  105. #endif
  106.  
  107. typedef struct TrackRecord TrackRecord;
  108.  
  109. typedef TrackRecord *Track;
  110.  
  111. #if defined(powerc) || defined (__powerc)
  112. #pragma options align=mac68k
  113. #endif
  114. struct MediaRecord {
  115.     long                        data[1];
  116. };
  117. #if defined(powerc) || defined(__powerc)
  118. #pragma options align=reset
  119. #endif
  120.  
  121. typedef struct MediaRecord MediaRecord;
  122.  
  123. typedef MediaRecord *Media;
  124.  
  125. #if defined(powerc) || defined (__powerc)
  126. #pragma options align=mac68k
  127. #endif
  128. struct UserDataRecord {
  129.     long                        data[1];
  130. };
  131. #if defined(powerc) || defined(__powerc)
  132. #pragma options align=reset
  133. #endif
  134.  
  135. typedef struct UserDataRecord UserDataRecord;
  136.  
  137. typedef UserDataRecord *UserData;
  138.  
  139. #if defined(powerc) || defined (__powerc)
  140. #pragma options align=mac68k
  141. #endif
  142. struct TrackEditStateRecord {
  143.     long                        data[1];
  144. };
  145. #if defined(powerc) || defined(__powerc)
  146. #pragma options align=reset
  147. #endif
  148.  
  149. typedef struct TrackEditStateRecord TrackEditStateRecord;
  150.  
  151. typedef TrackEditStateRecord *TrackEditState;
  152.  
  153. #if defined(powerc) || defined (__powerc)
  154. #pragma options align=mac68k
  155. #endif
  156. struct MovieEditStateRecord {
  157.     long                        data[1];
  158. };
  159. #if defined(powerc) || defined(__powerc)
  160. #pragma options align=reset
  161. #endif
  162.  
  163. typedef struct MovieEditStateRecord MovieEditStateRecord;
  164.  
  165. typedef MovieEditStateRecord *MovieEditState;
  166.  
  167. #if defined(powerc) || defined (__powerc)
  168. #pragma options align=mac68k
  169. #endif
  170. struct SampleDescription {
  171.     long                        descSize;
  172.     long                        dataFormat;
  173.     long                        resvd1;
  174.     short                        resvd2;
  175.     short                        dataRefIndex;
  176. };
  177. #if defined(powerc) || defined(__powerc)
  178. #pragma options align=reset
  179. #endif
  180.  
  181. typedef struct SampleDescription SampleDescription;
  182.  
  183. typedef SampleDescription *SampleDescriptionPtr, **SampleDescriptionHandle;
  184.  
  185. #if defined(powerc) || defined (__powerc)
  186. #pragma options align=mac68k
  187. #endif
  188. struct SoundDescription {
  189.     long                        descSize;
  190.     long                        dataFormat;
  191.     long                        resvd1;
  192.     short                        resvd2;
  193.     short                        dataRefIndex;
  194.     short                        version;
  195.     short                        revlevel;
  196.     long                        vendor;
  197.     short                        numChannels;
  198.     short                        sampleSize;
  199.     short                        compressionID;
  200.     short                        packetSize;
  201.     Fixed                        sampleRate;
  202. };
  203. #if defined(powerc) || defined(__powerc)
  204. #pragma options align=reset
  205. #endif
  206.  
  207. typedef struct SoundDescription SoundDescription;
  208.  
  209. typedef SoundDescription *SoundDescriptionPtr, **SoundDescriptionHandle;
  210.  
  211. #if defined(powerc) || defined (__powerc)
  212. #pragma options align=mac68k
  213. #endif
  214. struct TextDescription {
  215.     long                        size;
  216.     long                        type;
  217.     long                        resvd1;
  218.     short                        resvd2;
  219.     short                        dataRefIndex;
  220.     long                        displayFlags;
  221.     long                        textJustification;
  222.     RGBColor                    bgColor;
  223.     Rect                        defaultTextBox;
  224.     ScrpSTElement                defaultStyle;
  225.     char                        defaultFontName[1];
  226. };
  227. #if defined(powerc) || defined(__powerc)
  228. #pragma options align=reset
  229. #endif
  230.  
  231. typedef struct TextDescription TextDescription;
  232.  
  233. typedef TextDescription *TextDescriptionPtr, **TextDescriptionHandle;
  234.  
  235. enum  {
  236.     dfDontDisplay                = 1 << 0,
  237.     dfDontAutoScale                = 1 << 1,
  238.     dfClipToTextBox                = 1 << 2,
  239.     dfUseMovieBGColor            = 1 << 3,
  240.     dfShrinkTextBoxToFit        = 1 << 4,
  241.     dfScrollIn                    = 1 << 5,
  242.     dfScrollOut                    = 1 << 6,
  243.     dfHorizScroll                = 1 << 7,
  244.     dfReverseScroll                = 1 << 8,
  245.     dfContinuousScroll            = 1 << 9,
  246.     dfFlowHoriz                    = 1 << 10,
  247.     dfDropShadow                = 1 << 12,
  248.     dfAntiAlias                    = 1 << 13,
  249.     dfKeyedText                    = 1 << 14,
  250.     dfInverseHilite                = 1 << 15
  251. };
  252.  
  253. enum  {
  254.     searchTextDontGoToFoundTime    = 1L << 16,
  255.     searchTextDontHiliteFoundText = 1L << 17,
  256.     searchTextOneTrackOnly        = 1L << 18,
  257.     searchTextEnabledTracksOnly    = 1L << 19
  258. };
  259.  
  260. enum  {
  261.     movieProgressOpen            = 0,
  262.     movieProgressUpdatePercent    = 1,
  263.     movieProgressClose            = 2
  264. };
  265.  
  266. enum  {
  267.     progressOpFlatten            = 1,
  268.     progressOpInsertTrackSegment,
  269.     progressOpInsertMovieSegment,
  270.     progressOpPaste,
  271.     progressOpAddMovieSelection,
  272.     progressOpCopy,
  273.     progressOpCut,
  274.     progressOpLoadMovieIntoRam,
  275.     progressOpLoadTrackIntoRam,
  276.     progressOpLoadMediaIntoRam,
  277.     progressOpImportMovie,
  278.     progressOpExportMovie
  279. };
  280.  
  281. enum  {
  282.     mediaQualityDraft            = 0x0000,
  283.     mediaQualityNormal            = 0x0040,
  284.     mediaQualityBetter            = 0x0080,
  285.     mediaQualityBest            = 0x00C0
  286. };
  287.  
  288. typedef pascal OSErr (*MovieRgnCoverProcPtr)(Movie theMovie, RgnHandle changedRgn, long refcon);
  289.  
  290. enum {
  291.     uppMovieRgnCoverProcInfo = kPascalStackBased
  292.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  293.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  294.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle)))
  295.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  296. };
  297.  
  298. #if USESROUTINEDESCRIPTORS
  299. typedef UniversalProcPtr MovieRgnCoverUPP;
  300.  
  301. #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon)        \
  302.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, (theMovie), (changedRgn), (refcon))
  303. #define NewMovieRgnCoverProc(userRoutine)        \
  304.         (MovieRgnCoverUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, GetCurrentISA())
  305. #else
  306. typedef MovieRgnCoverProcPtr MovieRgnCoverUPP;
  307.  
  308. #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon)        \
  309.         (*(userRoutine))((theMovie), (changedRgn), (refcon))
  310. #define NewMovieRgnCoverProc(userRoutine)        \
  311.         (MovieRgnCoverUPP)(userRoutine)
  312. #endif
  313.  
  314. typedef pascal OSErr (*MovieProgressProcPtr)(Movie theMovie, short message, short whatOperation, Fixed percentDone, long refcon);
  315.  
  316. enum {
  317.     uppMovieProgressProcInfo = kPascalStackBased
  318.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  319.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  320.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  321.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  322.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Fixed)))
  323.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  324. };
  325.  
  326. #if USESROUTINEDESCRIPTORS
  327. typedef UniversalProcPtr MovieProgressUPP;
  328.  
  329. #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon)        \
  330.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieProgressProcInfo, (theMovie), (message), (whatOperation), (percentDone), (refcon))
  331. #define NewMovieProgressProc(userRoutine)        \
  332.         (MovieProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieProgressProcInfo, GetCurrentISA())
  333. #else
  334. typedef MovieProgressProcPtr MovieProgressUPP;
  335.  
  336. #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon)        \
  337.         (*(userRoutine))((theMovie), (message), (whatOperation), (percentDone), (refcon))
  338. #define NewMovieProgressProc(userRoutine)        \
  339.         (MovieProgressUPP)(userRoutine)
  340. #endif
  341.  
  342. typedef pascal OSErr (*MovieDrawingCompleteProcPtr)(Movie theMovie, long refCon);
  343.  
  344. enum {
  345.     uppMovieDrawingCompleteProcInfo = kPascalStackBased
  346.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  347.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie)))
  348.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  349. };
  350.  
  351. #if USESROUTINEDESCRIPTORS
  352. typedef UniversalProcPtr MovieDrawingCompleteUPP;
  353.  
  354. #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon)        \
  355.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, (theMovie), (refCon))
  356. #define NewMovieDrawingCompleteProc(userRoutine)        \
  357.         (MovieDrawingCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, GetCurrentISA())
  358. #else
  359. typedef MovieDrawingCompleteProcPtr MovieDrawingCompleteUPP;
  360.  
  361. #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon)        \
  362.         (*(userRoutine))((theMovie), (refCon))
  363. #define NewMovieDrawingCompleteProc(userRoutine)        \
  364.         (MovieDrawingCompleteUPP)(userRoutine)
  365. #endif
  366.  
  367. typedef pascal OSErr (*TrackTransferProcPtr)(Track t, long refCon);
  368.  
  369. enum {
  370.     uppTrackTransferProcInfo = kPascalStackBased
  371.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  372.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Track)))
  373.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  374. };
  375.  
  376. #if USESROUTINEDESCRIPTORS
  377. typedef UniversalProcPtr TrackTransferUPP;
  378.  
  379. #define CallTrackTransferProc(userRoutine, t, refCon)        \
  380.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTrackTransferProcInfo, (t), (refCon))
  381. #define NewTrackTransferProc(userRoutine)        \
  382.         (TrackTransferUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTrackTransferProcInfo, GetCurrentISA())
  383. #else
  384. typedef TrackTransferProcPtr TrackTransferUPP;
  385.  
  386. #define CallTrackTransferProc(userRoutine, t, refCon)        \
  387.         (*(userRoutine))((t), (refCon))
  388. #define NewTrackTransferProc(userRoutine)        \
  389.         (TrackTransferUPP)(userRoutine)
  390. #endif
  391.  
  392. typedef pascal OSErr (*GetMovieProcPtr)(long offset, long size, void *dataPtr, void *refCon);
  393.  
  394. enum {
  395.     uppGetMovieProcInfo = kPascalStackBased
  396.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  397.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  398.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  399.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  400.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
  401. };
  402.  
  403. #if USESROUTINEDESCRIPTORS
  404. typedef UniversalProcPtr GetMovieUPP;
  405.  
  406. #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon)        \
  407.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppGetMovieProcInfo, (offset), (size), (dataPtr), (refCon))
  408. #define NewGetMovieProc(userRoutine)        \
  409.         (GetMovieUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetMovieProcInfo, GetCurrentISA())
  410. #else
  411. typedef GetMovieProcPtr GetMovieUPP;
  412.  
  413. #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon)        \
  414.         (*(userRoutine))((offset), (size), (dataPtr), (refCon))
  415. #define NewGetMovieProc(userRoutine)        \
  416.         (GetMovieUPP)(userRoutine)
  417. #endif
  418.  
  419. typedef ComponentInstance MediaHandler, DataHandler;
  420.  
  421. typedef Component MediaHandlerComponent, DataHandlerComponent;
  422.  
  423. typedef ComponentResult HandlerError;
  424.  
  425. #ifndef kSmallestArray
  426. #define kSmallestArray 1
  427.  
  428. #endif
  429.  
  430. typedef long TimeValue;
  431.  
  432. typedef long TimeScale;
  433.  
  434. typedef Int64Bit CompTimeValue;
  435.  
  436. enum  {
  437.     loopTimeBase                = 1,
  438.     palindromeLoopTimeBase        = 2,
  439.     maintainTimeBaseZero        = 4
  440. };
  441.  
  442. typedef unsigned long TimeBaseFlags;
  443.  
  444. #if defined(powerc) || defined (__powerc)
  445. #pragma options align=mac68k
  446. #endif
  447. struct TimeBaseRecord {
  448.     long                        data[1];
  449. };
  450. #if defined(powerc) || defined(__powerc)
  451. #pragma options align=reset
  452. #endif
  453.  
  454. typedef struct TimeBaseRecord TimeBaseRecord;
  455.  
  456. typedef TimeBaseRecord *TimeBase;
  457.  
  458. #if defined(powerc) || defined (__powerc)
  459. #pragma options align=mac68k
  460. #endif
  461. struct CallBackRecord {
  462.     long                        data[1];
  463. };
  464. #if defined(powerc) || defined(__powerc)
  465. #pragma options align=reset
  466. #endif
  467.  
  468. typedef struct CallBackRecord CallBackRecord;
  469.  
  470. typedef CallBackRecord *QTCallBack;
  471.  
  472. #if defined(powerc) || defined (__powerc)
  473. #pragma options align=mac68k
  474. #endif
  475. struct TimeRecord {
  476.     CompTimeValue                value;
  477.     TimeScale                    scale;
  478.     TimeBase                    base;
  479. };
  480. #if defined(powerc) || defined(__powerc)
  481. #pragma options align=reset
  482. #endif
  483.  
  484. typedef struct TimeRecord TimeRecord;
  485.  
  486. enum  {
  487.     triggerTimeFwd                = 0x0001,
  488.     triggerTimeBwd                = 0x0002,
  489.     triggerTimeEither            = 0x0003,
  490.     triggerRateLT                = 0x0004,
  491.     triggerRateGT                = 0x0008,
  492.     triggerRateEqual            = 0x0010,
  493.     triggerRateLTE                = triggerRateLT|triggerRateEqual,
  494.     triggerRateGTE                = triggerRateGT|triggerRateEqual,
  495.     triggerRateNotEqual            = triggerRateGT|triggerRateEqual|triggerRateLT,
  496.     triggerRateChange            = 0,
  497.     triggerAtStart                = 0x0001,
  498.     triggerAtStop                = 0x0002
  499. };
  500.  
  501. typedef unsigned short QTCallBackFlags;
  502.  
  503. enum  {
  504.     timeBaseBeforeStartTime        = 1,
  505.     timeBaseAfterStopTime        = 2
  506. };
  507.  
  508. typedef unsigned long TimeBaseStatus;
  509.  
  510. enum  {
  511.     callBackAtTime                = 1,
  512.     callBackAtRate                = 2,
  513.     callBackAtTimeJump            = 3,
  514.     callBackAtExtremes            = 4,
  515.     callBackAtInterrupt            = 0x8000,
  516.     callBackAtDeferredTask        = 0x4000
  517. };
  518.  
  519. typedef unsigned short QTCallBackType;
  520.  
  521. typedef pascal void (*QTCallBackProcPtr)(QTCallBack cb, long refCon);
  522.  
  523. enum {
  524.     uppQTCallBackProcInfo = kPascalStackBased
  525.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(QTCallBack)))
  526.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  527. };
  528.  
  529. #if USESROUTINEDESCRIPTORS
  530. typedef UniversalProcPtr QTCallBackUPP;
  531.  
  532. #define CallQTCallBackProc(userRoutine, cb, refCon)        \
  533.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTCallBackProcInfo, (cb), (refCon))
  534. #define NewQTCallBackProc(userRoutine)        \
  535.         (QTCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTCallBackProcInfo, GetCurrentISA())
  536. #else
  537. typedef QTCallBackProcPtr QTCallBackUPP;
  538.  
  539. #define CallQTCallBackProc(userRoutine, cb, refCon)        \
  540.         (*(userRoutine))((cb), (refCon))
  541. #define NewQTCallBackProc(userRoutine)        \
  542.         (QTCallBackUPP)(userRoutine)
  543. #endif
  544.  
  545. enum  {
  546.     qtcbNeedsRateChanges        = 1,
  547.     qtcbNeedsTimeChanges        = 2,
  548.     qtcbNeedsStartStopChanges    = 4
  549. };
  550.  
  551. #if defined(powerc) || defined (__powerc)
  552. #pragma options align=mac68k
  553. #endif
  554. struct QTCallBackHeader {
  555.     long                        callBackFlags;
  556.     long                        reserved1;
  557.     char                        qtPrivate[40];
  558. };
  559. #if defined(powerc) || defined(__powerc)
  560. #pragma options align=reset
  561. #endif
  562.  
  563. typedef struct QTCallBackHeader QTCallBackHeader;
  564.  
  565. typedef pascal void (*QTSyncTaskProcPtr)(void *task);
  566.  
  567. enum {
  568.     uppQTSyncTaskProcInfo = kPascalStackBased
  569.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void*)))
  570. };
  571.  
  572. #if USESROUTINEDESCRIPTORS
  573. typedef UniversalProcPtr QTSyncTaskUPP;
  574.  
  575. #define CallQTSyncTaskProc(userRoutine, task)        \
  576.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTSyncTaskProcInfo, (task))
  577. #define NewQTSyncTaskProc(userRoutine)        \
  578.         (QTSyncTaskUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTSyncTaskProcInfo, GetCurrentISA())
  579. #else
  580. typedef QTSyncTaskProcPtr QTSyncTaskUPP;
  581.  
  582. #define CallQTSyncTaskProc(userRoutine, task)        \
  583.         (*(userRoutine))((task))
  584. #define NewQTSyncTaskProc(userRoutine)        \
  585.         (QTSyncTaskUPP)(userRoutine)
  586. #endif
  587.  
  588. #if defined(powerc) || defined (__powerc)
  589. #pragma options align=mac68k
  590. #endif
  591. struct QTSyncTaskRecord {
  592.     void                        *qLink;
  593.     QTSyncTaskUPP                proc;
  594. };
  595. #if defined(powerc) || defined(__powerc)
  596. #pragma options align=reset
  597. #endif
  598.  
  599. typedef struct QTSyncTaskRecord QTSyncTaskRecord;
  600.  
  601. typedef QTSyncTaskRecord *QTSyncTaskPtr;
  602.  
  603. enum  {
  604.     keepInRam                    = 1 << 0,
  605.     unkeepInRam                    = 1 << 1,
  606.     flushFromRam                = 1 << 2,
  607.     loadForwardTrackEdits        = 1 << 3,
  608.     loadBackwardTrackEdits        = 1 << 4
  609. };
  610.  
  611. typedef pascal Boolean (*MoviePreviewCallOutProcPtr)(long refcon);
  612.  
  613. enum {
  614.     uppMoviePreviewCallOutProcInfo = kPascalStackBased
  615.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  616.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  617. };
  618.  
  619. #if USESROUTINEDESCRIPTORS
  620. typedef UniversalProcPtr MoviePreviewCallOutUPP;
  621.  
  622. #define CallMoviePreviewCallOutProc(userRoutine, refcon)        \
  623.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, (refcon))
  624. #define NewMoviePreviewCallOutProc(userRoutine)        \
  625.         (MoviePreviewCallOutUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, GetCurrentISA())
  626. #else
  627. typedef MoviePreviewCallOutProcPtr MoviePreviewCallOutUPP;
  628.  
  629. #define CallMoviePreviewCallOutProc(userRoutine, refcon)        \
  630.         (*(userRoutine))((refcon))
  631. #define NewMoviePreviewCallOutProc(userRoutine)        \
  632.         (MoviePreviewCallOutUPP)(userRoutine)
  633. #endif
  634.  
  635. enum  {
  636.     newMovieActive                = 1 << 0,
  637.     newMovieDontResolveDataRefs    = 1 << 1,
  638.     newMovieDontAskUnresolvedDataRefs = 1 << 2,
  639.     newMovieDontAutoAlternates    = 1 << 3
  640. };
  641.  
  642. enum  {
  643.     trackUsageInMovie            = 1 << 1,
  644.     trackUsageInPreview            = 1 << 2,
  645.     trackUsageInPoster            = 1 << 3
  646. };
  647.  
  648. enum  {
  649.     mediaSampleNotSync            = 1 << 0,
  650.     mediaSampleShadowSync        = 1 << 1
  651. };
  652.  
  653. enum  {
  654.     pasteInParallel                = 1,
  655.     showUserSettingsDialog        = 2,
  656.     movieToFileOnlyExport        = 4
  657. };
  658.  
  659. enum  {
  660.     nextTimeMediaSample            = 1 << 0,
  661.     nextTimeMediaEdit            = 1 << 1,
  662.     nextTimeTrackEdit            = 1 << 2,
  663.     nextTimeSyncSample            = 1 << 3,
  664.     nextTimeEdgeOK                = 1 << 14,
  665.     nextTimeIgnoreActiveSegment    = 1 << 15
  666. };
  667.  
  668. typedef unsigned short nextTimeFlagsEnum;
  669.  
  670. enum  {
  671.     createMovieFileDeleteCurFile = 1L << 31,
  672.     createMovieFileDontCreateMovie = 1L << 30,
  673.     createMovieFileDontOpenFile    = 1L << 29
  674. };
  675.  
  676. typedef unsigned long createMovieFileFlagsEnum;
  677.  
  678. enum  {
  679.     flattenAddMovieToDataFork    = 1L << 0,
  680.     flattenActiveTracksOnly        = 1L << 2,
  681.     flattenDontInterleaveFlatten = 1L << 3
  682. };
  683.  
  684. typedef unsigned long movieFlattenFlagsEnum;
  685.  
  686. enum  {
  687.     movieInDataForkResID        = -1
  688. };
  689.  
  690. enum  {
  691.     mcTopLeftMovie                = 1 << 0,
  692.     mcScaleMovieToFit            = 1 << 1,
  693.     mcWithBadge                    = 1 << 2,
  694.     mcNotVisible                = 1 << 3,
  695.     mcWithFrame                    = 1 << 4
  696. };
  697.  
  698. enum  {
  699.     movieScrapDontZeroScrap        = 1 << 0,
  700.     movieScrapOnlyPutMovie        = 1 << 1
  701. };
  702.  
  703. enum  {
  704.     dataRefSelfReference        = 1 << 0,
  705.     dataRefWasNotResolved        = 1 << 1
  706. };
  707.  
  708. typedef unsigned long dataRefAttributesFlags;
  709.  
  710. enum  {
  711.     hintsScrubMode                = 1 << 0,
  712.     hintsLoop                    = 1 << 1,
  713.     hintsDontPurge                = 1 << 2,
  714.     hintsUseScreenBuffer        = 1 << 5,
  715.     hintsAllowInterlace            = 1 << 6,
  716.     hintsUseSoundInterp            = 1 << 7,
  717.     hintsHighQuality            = 1 << 8,
  718.     hintsPalindrome                = 1 << 9,
  719.     hintsInactive                = 1 << 11
  720. };
  721.  
  722. typedef unsigned long playHintsEnum;
  723.  
  724. enum  {
  725.     mediaHandlerFlagBaseClient    = 1
  726. };
  727.  
  728. typedef unsigned long mediaHandlerFlagsEnum;
  729.  
  730. enum  {
  731.     movieTrackMediaType            = 1 << 0,
  732.     movieTrackCharacteristic    = 1 << 1,
  733.     movieTrackEnabledOnly        = 1 << 2
  734. };
  735.  
  736. #ifdef __cplusplus
  737. extern "C" {
  738. #endif
  739.  
  740. extern pascal OSErr EnterMovies(void)
  741.  TWOWORDINLINE(0x7001, 0xAAAA);
  742. extern pascal void ExitMovies(void)
  743.  TWOWORDINLINE(0x7002, 0xAAAA);
  744. typedef pascal void (*MoviesErrorProcPtr)(OSErr theErr, long refcon);
  745.  
  746. enum {
  747.     uppMoviesErrorProcInfo = kPascalStackBased
  748.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  749.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  750. };
  751.  
  752. #if USESROUTINEDESCRIPTORS
  753. typedef UniversalProcPtr MoviesErrorUPP;
  754.  
  755. #define CallMoviesErrorProc(userRoutine, theErr, refcon)        \
  756.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviesErrorProcInfo, (theErr), (refcon))
  757. #define NewMoviesErrorProc(userRoutine)        \
  758.         (MoviesErrorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviesErrorProcInfo, GetCurrentISA())
  759. #else
  760. typedef MoviesErrorProcPtr MoviesErrorUPP;
  761.  
  762. #define CallMoviesErrorProc(userRoutine, theErr, refcon)        \
  763.         (*(userRoutine))((theErr), (refcon))
  764. #define NewMoviesErrorProc(userRoutine)        \
  765.         (MoviesErrorUPP)(userRoutine)
  766. #endif
  767.  
  768. extern pascal OSErr GetMoviesError(void)
  769.  TWOWORDINLINE(0x7003, 0xAAAA);
  770. extern pascal void ClearMoviesStickyError(void)
  771.  THREEWORDINLINE(0x303C, 0xDE, 0xAAAA);
  772. extern pascal OSErr GetMoviesStickyError(void)
  773.  TWOWORDINLINE(0x7004, 0xAAAA);
  774. extern pascal void SetMoviesErrorProc(MoviesErrorUPP errProc, long refcon)
  775.  THREEWORDINLINE(0x303C, 0xEF, 0xAAAA);
  776. extern pascal void MoviesTask(Movie theMovie, long maxMilliSecToUse)
  777.  TWOWORDINLINE(0x7005, 0xAAAA);
  778. extern pascal OSErr PrerollMovie(Movie theMovie, TimeValue time, Fixed Rate)
  779.  TWOWORDINLINE(0x7006, 0xAAAA);
  780. extern pascal OSErr LoadMovieIntoRam(Movie theMovie, TimeValue time, TimeValue duration, long flags)
  781.  TWOWORDINLINE(0x7007, 0xAAAA);
  782. extern pascal OSErr LoadTrackIntoRam(Track theTrack, TimeValue time, TimeValue duration, long flags)
  783.  THREEWORDINLINE(0x303C, 0x16E, 0xAAAA);
  784. extern pascal OSErr LoadMediaIntoRam(Media theMedia, TimeValue time, TimeValue duration, long flags)
  785.  TWOWORDINLINE(0x7008, 0xAAAA);
  786. extern pascal void SetMovieActive(Movie theMovie, Boolean active)
  787.  TWOWORDINLINE(0x7009, 0xAAAA);
  788. extern pascal Boolean GetMovieActive(Movie theMovie)
  789.  TWOWORDINLINE(0x700A, 0xAAAA);
  790. extern pascal void StartMovie(Movie theMovie)
  791.  TWOWORDINLINE(0x700B, 0xAAAA);
  792. extern pascal void StopMovie(Movie theMovie)
  793.  TWOWORDINLINE(0x700C, 0xAAAA);
  794. extern pascal void GoToBeginningOfMovie(Movie theMovie)
  795.  TWOWORDINLINE(0x700D, 0xAAAA);
  796. extern pascal void GoToEndOfMovie(Movie theMovie)
  797.  TWOWORDINLINE(0x700E, 0xAAAA);
  798. extern pascal Boolean IsMovieDone(Movie theMovie)
  799.  THREEWORDINLINE(0x303C, 0xDD, 0xAAAA);
  800. extern pascal Boolean GetMoviePreviewMode(Movie theMovie)
  801.  TWOWORDINLINE(0x700F, 0xAAAA);
  802. extern pascal void SetMoviePreviewMode(Movie theMovie, Boolean usePreview)
  803.  TWOWORDINLINE(0x7010, 0xAAAA);
  804. extern pascal void ShowMoviePoster(Movie theMovie)
  805.  TWOWORDINLINE(0x7011, 0xAAAA);
  806. extern pascal void PlayMoviePreview(Movie theMovie, MoviePreviewCallOutUPP callOutProc, long refcon)
  807.  THREEWORDINLINE(0x303C, 0xF2, 0xAAAA);
  808. extern pascal TimeBase GetMovieTimeBase(Movie theMovie)
  809.  TWOWORDINLINE(0x7012, 0xAAAA);
  810. extern pascal void SetMovieMasterTimeBase(Movie theMovie, TimeBase tb, const TimeRecord *slaveZero)
  811.  THREEWORDINLINE(0x303C, 0x167, 0xAAAA);
  812. extern pascal void SetMovieMasterClock(Movie theMovie, Component clockMeister, const TimeRecord *slaveZero)
  813.  THREEWORDINLINE(0x303C, 0x168, 0xAAAA);
  814. extern pascal void GetMovieGWorld(Movie theMovie, CGrafPtr *port, GDHandle *gdh)
  815.  TWOWORDINLINE(0x7015, 0xAAAA);
  816. extern pascal void SetMovieGWorld(Movie theMovie, CGrafPtr port, GDHandle gdh)
  817.  TWOWORDINLINE(0x7016, 0xAAAA);
  818. enum  {
  819.     movieDrawingCallWhenChanged    = 0,
  820.     movieDrawingCallAlways        = 1
  821. };
  822.  
  823. extern pascal void SetMovieDrawingCompleteProc(Movie theMovie, long flags, MovieDrawingCompleteUPP proc, long refCon)
  824.  THREEWORDINLINE(0x303C, 0x1DE, 0xAAAA);
  825. extern pascal Track GetNextTrackForCompositing(Movie theMovie, Track theTrack)
  826.  THREEWORDINLINE(0x303C, 0x1FA, 0xAAAA);
  827. extern pascal Track GetPrevTrackForCompositing(Movie theMovie, Track theTrack)
  828.  THREEWORDINLINE(0x303C, 0x1FB, 0xAAAA);
  829. extern pascal void SetTrackGWorld(Track theTrack, CGrafPtr port, GDHandle gdh, TrackTransferUPP proc, long refCon)
  830.  THREEWORDINLINE(0x303C, 0x9D, 0xAAAA);
  831. extern pascal PicHandle GetMoviePict(Movie theMovie, TimeValue time)
  832.  TWOWORDINLINE(0x701D, 0xAAAA);
  833. extern pascal PicHandle GetTrackPict(Track theTrack, TimeValue time)
  834.  TWOWORDINLINE(0x701E, 0xAAAA);
  835. extern pascal PicHandle GetMoviePosterPict(Movie theMovie)
  836.  THREEWORDINLINE(0x303C, 0xF7, 0xAAAA);
  837. extern pascal OSErr UpdateMovie(Movie theMovie)
  838.  TWOWORDINLINE(0x701F, 0xAAAA);
  839. extern pascal void GetMovieBox(Movie theMovie, Rect *boxRect)
  840.  THREEWORDINLINE(0x303C, 0xF9, 0xAAAA);
  841. extern pascal void SetMovieBox(Movie theMovie, const Rect *boxRect)
  842.  THREEWORDINLINE(0x303C, 0xFA, 0xAAAA);
  843. extern pascal RgnHandle GetMovieDisplayClipRgn(Movie theMovie)
  844.  THREEWORDINLINE(0x303C, 0xFC, 0xAAAA);
  845. extern pascal void SetMovieDisplayClipRgn(Movie theMovie, RgnHandle theClip)
  846.  THREEWORDINLINE(0x303C, 0xFD, 0xAAAA);
  847. extern pascal RgnHandle GetMovieClipRgn(Movie theMovie)
  848.  THREEWORDINLINE(0x303C, 0x100, 0xAAAA);
  849. extern pascal void SetMovieClipRgn(Movie theMovie, RgnHandle theClip)
  850.  THREEWORDINLINE(0x303C, 0x101, 0xAAAA);
  851. extern pascal RgnHandle GetTrackClipRgn(Track theTrack)
  852.  THREEWORDINLINE(0x303C, 0x102, 0xAAAA);
  853. extern pascal void SetTrackClipRgn(Track theTrack, RgnHandle theClip)
  854.  THREEWORDINLINE(0x303C, 0x103, 0xAAAA);
  855. extern pascal RgnHandle GetMovieDisplayBoundsRgn(Movie theMovie)
  856.  THREEWORDINLINE(0x303C, 0xFB, 0xAAAA);
  857. extern pascal RgnHandle GetTrackDisplayBoundsRgn(Track theTrack)
  858.  THREEWORDINLINE(0x303C, 0x112, 0xAAAA);
  859. extern pascal RgnHandle GetMovieBoundsRgn(Movie theMovie)
  860.  THREEWORDINLINE(0x303C, 0xFE, 0xAAAA);
  861. extern pascal RgnHandle GetTrackMovieBoundsRgn(Track theTrack)
  862.  THREEWORDINLINE(0x303C, 0xFF, 0xAAAA);
  863. extern pascal RgnHandle GetTrackBoundsRgn(Track theTrack)
  864.  THREEWORDINLINE(0x303C, 0x111, 0xAAAA);
  865. extern pascal PixMapHandle GetTrackMatte(Track theTrack)
  866.  THREEWORDINLINE(0x303C, 0x115, 0xAAAA);
  867. extern pascal void SetTrackMatte(Track theTrack, PixMapHandle theMatte)
  868.  THREEWORDINLINE(0x303C, 0x116, 0xAAAA);
  869. extern pascal void DisposeMatte(PixMapHandle theMatte)
  870.  THREEWORDINLINE(0x303C, 0x14A, 0xAAAA);
  871. extern pascal Movie NewMovie(long flags)
  872.  THREEWORDINLINE(0x303C, 0x187, 0xAAAA);
  873. extern pascal OSErr PutMovieIntoHandle(Movie theMovie, Handle publicMovie)
  874.  TWOWORDINLINE(0x7022, 0xAAAA);
  875. extern pascal OSErr PutMovieIntoDataFork(Movie theMovie, short fRefNum, long offset, long maxSize)
  876.  THREEWORDINLINE(0x303C, 0x1B4, 0xAAAA);
  877. extern pascal void DisposeMovie(Movie theMovie)
  878.  TWOWORDINLINE(0x7023, 0xAAAA);
  879. extern pascal unsigned long GetMovieCreationTime(Movie theMovie)
  880.  TWOWORDINLINE(0x7026, 0xAAAA);
  881. extern pascal unsigned long GetMovieModificationTime(Movie theMovie)
  882.  TWOWORDINLINE(0x7027, 0xAAAA);
  883. extern pascal TimeScale GetMovieTimeScale(Movie theMovie)
  884.  TWOWORDINLINE(0x7029, 0xAAAA);
  885. extern pascal void SetMovieTimeScale(Movie theMovie, TimeScale timeScale)
  886.  TWOWORDINLINE(0x702A, 0xAAAA);
  887. extern pascal TimeValue GetMovieDuration(Movie theMovie)
  888.  TWOWORDINLINE(0x702B, 0xAAAA);
  889. extern pascal Fixed GetMovieRate(Movie theMovie)
  890.  TWOWORDINLINE(0x702C, 0xAAAA);
  891. extern pascal void SetMovieRate(Movie theMovie, Fixed rate)
  892.  TWOWORDINLINE(0x702D, 0xAAAA);
  893. extern pascal Fixed GetMoviePreferredRate(Movie theMovie)
  894.  THREEWORDINLINE(0x303C, 0xF3, 0xAAAA);
  895. extern pascal void SetMoviePreferredRate(Movie theMovie, Fixed rate)
  896.  THREEWORDINLINE(0x303C, 0xF4, 0xAAAA);
  897. extern pascal short GetMoviePreferredVolume(Movie theMovie)
  898.  THREEWORDINLINE(0x303C, 0xF5, 0xAAAA);
  899. extern pascal void SetMoviePreferredVolume(Movie theMovie, short volume)
  900.  THREEWORDINLINE(0x303C, 0xF6, 0xAAAA);
  901. extern pascal short GetMovieVolume(Movie theMovie)
  902.  TWOWORDINLINE(0x702E, 0xAAAA);
  903. extern pascal void SetMovieVolume(Movie theMovie, short volume)
  904.  TWOWORDINLINE(0x702F, 0xAAAA);
  905. extern pascal void GetMovieMatrix(Movie theMovie, MatrixRecord *matrix)
  906.  TWOWORDINLINE(0x7031, 0xAAAA);
  907. extern pascal void SetMovieMatrix(Movie theMovie, const MatrixRecord *matrix)
  908.  TWOWORDINLINE(0x7032, 0xAAAA);
  909. extern pascal void GetMoviePreviewTime(Movie theMovie, TimeValue *previewTime, TimeValue *previewDuration)
  910.  TWOWORDINLINE(0x7033, 0xAAAA);
  911. extern pascal void SetMoviePreviewTime(Movie theMovie, TimeValue previewTime, TimeValue previewDuration)
  912.  TWOWORDINLINE(0x7034, 0xAAAA);
  913. extern pascal TimeValue GetMoviePosterTime(Movie theMovie)
  914.  TWOWORDINLINE(0x7035, 0xAAAA);
  915. extern pascal void SetMoviePosterTime(Movie theMovie, TimeValue posterTime)
  916.  TWOWORDINLINE(0x7036, 0xAAAA);
  917. extern pascal void GetMovieSelection(Movie theMovie, TimeValue *selectionTime, TimeValue *selectionDuration)
  918.  TWOWORDINLINE(0x7037, 0xAAAA);
  919. extern pascal void SetMovieSelection(Movie theMovie, TimeValue selectionTime, TimeValue selectionDuration)
  920.  TWOWORDINLINE(0x7038, 0xAAAA);
  921. extern pascal void SetMovieActiveSegment(Movie theMovie, TimeValue startTime, TimeValue duration)
  922.  THREEWORDINLINE(0x303C, 0x15C, 0xAAAA);
  923. extern pascal void GetMovieActiveSegment(Movie theMovie, TimeValue *startTime, TimeValue *duration)
  924.  THREEWORDINLINE(0x303C, 0x15D, 0xAAAA);
  925. extern pascal TimeValue GetMovieTime(Movie theMovie, TimeRecord *currentTime)
  926.  TWOWORDINLINE(0x7039, 0xAAAA);
  927. extern pascal void SetMovieTime(Movie theMovie, const TimeRecord *newtime)
  928.  TWOWORDINLINE(0x703C, 0xAAAA);
  929. extern pascal void SetMovieTimeValue(Movie theMovie, TimeValue newtime)
  930.  TWOWORDINLINE(0x703D, 0xAAAA);
  931. extern pascal UserData GetMovieUserData(Movie theMovie)
  932.  TWOWORDINLINE(0x703E, 0xAAAA);
  933. extern pascal long GetMovieTrackCount(Movie theMovie)
  934.  TWOWORDINLINE(0x703F, 0xAAAA);
  935. extern pascal Track GetMovieTrack(Movie theMovie, long trackID)
  936.  TWOWORDINLINE(0x7040, 0xAAAA);
  937. extern pascal Track GetMovieIndTrack(Movie theMovie, long index)
  938.  THREEWORDINLINE(0x303C, 0x117, 0xAAAA);
  939. extern pascal Track GetMovieIndTrackType(Movie theMovie, long index, OSType trackType, long flags)
  940.  THREEWORDINLINE(0x303C, 0x208, 0xAAAA);
  941. extern pascal long GetTrackID(Track theTrack)
  942.  THREEWORDINLINE(0x303C, 0x127, 0xAAAA);
  943. extern pascal Movie GetTrackMovie(Track theTrack)
  944.  THREEWORDINLINE(0x303C, 0xD0, 0xAAAA);
  945. extern pascal Track NewMovieTrack(Movie theMovie, Fixed width, Fixed height, short trackVolume)
  946.  THREEWORDINLINE(0x303C, 0x188, 0xAAAA);
  947. extern pascal void DisposeMovieTrack(Track theTrack)
  948.  TWOWORDINLINE(0x7042, 0xAAAA);
  949. extern pascal unsigned long GetTrackCreationTime(Track theTrack)
  950.  TWOWORDINLINE(0x7043, 0xAAAA);
  951. extern pascal unsigned long GetTrackModificationTime(Track theTrack)
  952.  TWOWORDINLINE(0x7044, 0xAAAA);
  953. extern pascal Boolean GetTrackEnabled(Track theTrack)
  954.  TWOWORDINLINE(0x7045, 0xAAAA);
  955. extern pascal void SetTrackEnabled(Track theTrack, Boolean isEnabled)
  956.  TWOWORDINLINE(0x7046, 0xAAAA);
  957. extern pascal long GetTrackUsage(Track theTrack)
  958.  TWOWORDINLINE(0x7047, 0xAAAA);
  959. extern pascal void SetTrackUsage(Track theTrack, long usage)
  960.  TWOWORDINLINE(0x7048, 0xAAAA);
  961. extern pascal TimeValue GetTrackDuration(Track theTrack)
  962.  TWOWORDINLINE(0x704B, 0xAAAA);
  963. extern pascal TimeValue GetTrackOffset(Track theTrack)
  964.  TWOWORDINLINE(0x704C, 0xAAAA);
  965. extern pascal void SetTrackOffset(Track theTrack, TimeValue movieOffsetTime)
  966.  TWOWORDINLINE(0x704D, 0xAAAA);
  967. extern pascal short GetTrackLayer(Track theTrack)
  968.  TWOWORDINLINE(0x7050, 0xAAAA);
  969. extern pascal void SetTrackLayer(Track theTrack, short layer)
  970.  TWOWORDINLINE(0x7051, 0xAAAA);
  971. extern pascal Track GetTrackAlternate(Track theTrack)
  972.  TWOWORDINLINE(0x7052, 0xAAAA);
  973. extern pascal void SetTrackAlternate(Track theTrack, Track alternateT)
  974.  TWOWORDINLINE(0x7053, 0xAAAA);
  975. extern pascal void SetAutoTrackAlternatesEnabled(Movie theMovie, Boolean enable)
  976.  THREEWORDINLINE(0x303C, 0x15E, 0xAAAA);
  977. extern pascal void SelectMovieAlternates(Movie theMovie)
  978.  THREEWORDINLINE(0x303C, 0x15F, 0xAAAA);
  979. extern pascal short GetTrackVolume(Track theTrack)
  980.  TWOWORDINLINE(0x7054, 0xAAAA);
  981. extern pascal void SetTrackVolume(Track theTrack, short volume)
  982.  TWOWORDINLINE(0x7055, 0xAAAA);
  983. extern pascal void GetTrackMatrix(Track theTrack, MatrixRecord *matrix)
  984.  TWOWORDINLINE(0x7056, 0xAAAA);
  985. extern pascal void SetTrackMatrix(Track theTrack, const MatrixRecord *matrix)
  986.  TWOWORDINLINE(0x7057, 0xAAAA);
  987. extern pascal void GetTrackDimensions(Track theTrack, Fixed *width, Fixed *height)
  988.  TWOWORDINLINE(0x705D, 0xAAAA);
  989. extern pascal void SetTrackDimensions(Track theTrack, Fixed width, Fixed height)
  990.  TWOWORDINLINE(0x705E, 0xAAAA);
  991. extern pascal UserData GetTrackUserData(Track theTrack)
  992.  TWOWORDINLINE(0x705F, 0xAAAA);
  993. extern pascal Media NewTrackMedia(Track theTrack, OSType mediaType, TimeScale timeScale, Handle dataRef, OSType dataRefType)
  994.  THREEWORDINLINE(0x303C, 0x18E, 0xAAAA);
  995. extern pascal void DisposeTrackMedia(Media theMedia)
  996.  TWOWORDINLINE(0x7061, 0xAAAA);
  997. extern pascal Media GetTrackMedia(Track theTrack)
  998.  TWOWORDINLINE(0x7062, 0xAAAA);
  999. extern pascal Track GetMediaTrack(Media theMedia)
  1000.  THREEWORDINLINE(0x303C, 0xC5, 0xAAAA);
  1001. extern pascal unsigned long GetMediaCreationTime(Media theMedia)
  1002.  TWOWORDINLINE(0x7066, 0xAAAA);
  1003. extern pascal unsigned long GetMediaModificationTime(Media theMedia)
  1004.  TWOWORDINLINE(0x7067, 0xAAAA);
  1005. extern pascal TimeScale GetMediaTimeScale(Media theMedia)
  1006.  TWOWORDINLINE(0x7068, 0xAAAA);
  1007. extern pascal void SetMediaTimeScale(Media theMedia, TimeScale timeScale)
  1008.  TWOWORDINLINE(0x7069, 0xAAAA);
  1009. extern pascal TimeValue GetMediaDuration(Media theMedia)
  1010.  TWOWORDINLINE(0x706A, 0xAAAA);
  1011. extern pascal short GetMediaLanguage(Media theMedia)
  1012.  TWOWORDINLINE(0x706B, 0xAAAA);
  1013. extern pascal void SetMediaLanguage(Media theMedia, short language)
  1014.  TWOWORDINLINE(0x706C, 0xAAAA);
  1015. extern pascal short GetMediaQuality(Media theMedia)
  1016.  TWOWORDINLINE(0x706D, 0xAAAA);
  1017. extern pascal void SetMediaQuality(Media theMedia, short quality)
  1018.  TWOWORDINLINE(0x706E, 0xAAAA);
  1019. extern pascal void GetMediaHandlerDescription(Media theMedia, OSType *mediaType, Str255 creatorName, OSType *creatorManufacturer)
  1020.  TWOWORDINLINE(0x706F, 0xAAAA);
  1021. extern pascal UserData GetMediaUserData(Media theMedia)
  1022.  TWOWORDINLINE(0x7070, 0xAAAA);
  1023. extern pascal MediaHandler GetMediaHandler(Media theMedia)
  1024.  TWOWORDINLINE(0x7071, 0xAAAA);
  1025. extern pascal OSErr SetMediaHandler(Media theMedia, MediaHandlerComponent mH)
  1026.  THREEWORDINLINE(0x303C, 0x190, 0xAAAA);
  1027. extern pascal OSErr BeginMediaEdits(Media theMedia)
  1028.  TWOWORDINLINE(0x7072, 0xAAAA);
  1029. extern pascal OSErr EndMediaEdits(Media theMedia)
  1030.  TWOWORDINLINE(0x7073, 0xAAAA);
  1031. extern pascal OSErr SetMediaDefaultDataRefIndex(Media theMedia, short index)
  1032.  THREEWORDINLINE(0x303C, 0x1E0, 0xAAAA);
  1033. extern pascal void GetMediaDataHandlerDescription(Media theMedia, short index, OSType *dhType, Str255 creatorName, OSType *creatorManufacturer)
  1034.  THREEWORDINLINE(0x303C, 0x19E, 0xAAAA);
  1035. extern pascal DataHandler GetMediaDataHandler(Media theMedia, short index)
  1036.  THREEWORDINLINE(0x303C, 0x19F, 0xAAAA);
  1037. extern pascal OSErr SetMediaDataHandler(Media theMedia, short index, DataHandlerComponent dataHandler)
  1038.  THREEWORDINLINE(0x303C, 0x1A0, 0xAAAA);
  1039. extern pascal Component GetDataHandler(Handle dataRef, OSType dataHandlerSubType, long flags)
  1040.  THREEWORDINLINE(0x303C, 0x1ED, 0xAAAA);
  1041. extern pascal long GetMediaSampleDescriptionCount(Media theMedia)
  1042.  TWOWORDINLINE(0x7077, 0xAAAA);
  1043. extern pascal void GetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH)
  1044.  TWOWORDINLINE(0x7078, 0xAAAA);
  1045. extern pascal OSErr SetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH)
  1046.  THREEWORDINLINE(0x303C, 0x1D0, 0xAAAA);
  1047. extern pascal long GetMediaSampleCount(Media theMedia)
  1048.  TWOWORDINLINE(0x7079, 0xAAAA);
  1049. extern pascal void SampleNumToMediaTime(Media theMedia, long logicalSampleNum, TimeValue *sampleTime, TimeValue *sampleDuration)
  1050.  TWOWORDINLINE(0x707A, 0xAAAA);
  1051. extern pascal void MediaTimeToSampleNum(Media theMedia, TimeValue time, long *sampleNum, TimeValue *sampleTime, TimeValue *sampleDuration)
  1052.  TWOWORDINLINE(0x707B, 0xAAAA);
  1053. extern pascal OSErr AddMediaSample(Media theMedia, Handle dataIn, long inOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime)
  1054.  TWOWORDINLINE(0x707C, 0xAAAA);
  1055. #if defined(powerc) || defined (__powerc)
  1056. #pragma options align=mac68k
  1057. #endif
  1058. struct SampleReferenceRecord {
  1059.     long                        dataOffset;
  1060.     long                        dataSize;
  1061.     TimeValue                    durationPerSample;
  1062.     long                        numberOfSamples;
  1063.     short                        sampleFlags;
  1064. };
  1065. #if defined(powerc) || defined(__powerc)
  1066. #pragma options align=reset
  1067. #endif
  1068.  
  1069. typedef struct SampleReferenceRecord SampleReferenceRecord;
  1070.  
  1071. typedef SampleReferenceRecord *SampleReferencePtr;
  1072.  
  1073. extern pascal OSErr AddMediaSampleReference(Media theMedia, long dataOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime)
  1074.  TWOWORDINLINE(0x707D, 0xAAAA);
  1075. extern pascal OSErr AddMediaSampleReferences(Media theMedia, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, SampleReferencePtr sampleRefs, TimeValue *sampleTime)
  1076.  THREEWORDINLINE(0x303C, 0x1F7, 0xAAAA);
  1077. extern pascal OSErr GetMediaSample(Media theMedia, Handle dataOut, long maxSizeToGrow, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags)
  1078.  TWOWORDINLINE(0x707E, 0xAAAA);
  1079. extern pascal OSErr GetMediaSampleReference(Media theMedia, long *dataOffset, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags)
  1080.  TWOWORDINLINE(0x707F, 0xAAAA);
  1081. extern pascal OSErr SetMediaPreferredChunkSize(Media theMedia, long maxChunkSize)
  1082.  THREEWORDINLINE(0x303C, 0x1F8, 0xAAAA);
  1083. extern pascal OSErr GetMediaPreferredChunkSize(Media theMedia, long *maxChunkSize)
  1084.  THREEWORDINLINE(0x303C, 0x1F9, 0xAAAA);
  1085. extern pascal OSErr SetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long syncSampleNum)
  1086.  THREEWORDINLINE(0x303C, 0x121, 0xAAAA);
  1087. extern pascal OSErr GetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long *syncSampleNum)
  1088.  THREEWORDINLINE(0x303C, 0x122, 0xAAAA);
  1089. extern pascal OSErr InsertMediaIntoTrack(Track theTrack, TimeValue trackStart, TimeValue mediaTime, TimeValue mediaDuration, Fixed mediaRate)
  1090.  THREEWORDINLINE(0x303C, 0x183, 0xAAAA);
  1091. extern pascal OSErr InsertTrackSegment(Track srcTrack, Track dstTrack, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn)
  1092.  THREEWORDINLINE(0x303C, 0x85, 0xAAAA);
  1093. extern pascal OSErr InsertMovieSegment(Movie srcMovie, Movie dstMovie, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn)
  1094.  THREEWORDINLINE(0x303C, 0x86, 0xAAAA);
  1095. extern pascal OSErr InsertEmptyTrackSegment(Track dstTrack, TimeValue dstIn, TimeValue dstDuration)
  1096.  THREEWORDINLINE(0x303C, 0x87, 0xAAAA);
  1097. extern pascal OSErr InsertEmptyMovieSegment(Movie dstMovie, TimeValue dstIn, TimeValue dstDuration)
  1098.  THREEWORDINLINE(0x303C, 0x88, 0xAAAA);
  1099. extern pascal OSErr DeleteTrackSegment(Track theTrack, TimeValue in, TimeValue duration)
  1100.  THREEWORDINLINE(0x303C, 0x89, 0xAAAA);
  1101. extern pascal OSErr DeleteMovieSegment(Movie theMovie, TimeValue in, TimeValue duration)
  1102.  THREEWORDINLINE(0x303C, 0x8A, 0xAAAA);
  1103. extern pascal OSErr ScaleTrackSegment(Track theTrack, TimeValue in, TimeValue oldDuration, TimeValue newDuration)
  1104.  THREEWORDINLINE(0x303C, 0x8B, 0xAAAA);
  1105. extern pascal OSErr ScaleMovieSegment(Movie theMovie, TimeValue in, TimeValue oldDuration, TimeValue newDuration)
  1106.  THREEWORDINLINE(0x303C, 0x8C, 0xAAAA);
  1107. extern pascal Movie CutMovieSelection(Movie theMovie)
  1108.  THREEWORDINLINE(0x303C, 0x8D, 0xAAAA);
  1109. extern pascal Movie CopyMovieSelection(Movie theMovie)
  1110.  THREEWORDINLINE(0x303C, 0x8E, 0xAAAA);
  1111. extern pascal void PasteMovieSelection(Movie theMovie, Movie src)
  1112.  THREEWORDINLINE(0x303C, 0x8F, 0xAAAA);
  1113. extern pascal void AddMovieSelection(Movie theMovie, Movie src)
  1114.  THREEWORDINLINE(0x303C, 0x152, 0xAAAA);
  1115. extern pascal void ClearMovieSelection(Movie theMovie)
  1116.  THREEWORDINLINE(0x303C, 0xE1, 0xAAAA);
  1117. extern pascal OSErr PasteHandleIntoMovie(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp)
  1118.  THREEWORDINLINE(0x303C, 0xCB, 0xAAAA);
  1119. extern pascal OSErr PutMovieIntoTypedHandle(Movie theMovie, Track targetTrack, OSType handleType, Handle publicMovie, TimeValue start, TimeValue dur, long flags, ComponentInstance userComp)
  1120.  THREEWORDINLINE(0x303C, 0x1CD, 0xAAAA);
  1121. extern pascal Component IsScrapMovie(Track targetTrack)
  1122.  THREEWORDINLINE(0x303C, 0xCC, 0xAAAA);
  1123. extern pascal OSErr CopyTrackSettings(Track srcTrack, Track dstTrack)
  1124.  THREEWORDINLINE(0x303C, 0x153, 0xAAAA);
  1125. extern pascal OSErr CopyMovieSettings(Movie srcMovie, Movie dstMovie)
  1126.  THREEWORDINLINE(0x303C, 0x154, 0xAAAA);
  1127. extern pascal OSErr AddEmptyTrackToMovie(Track srcTrack, Movie dstMovie, Handle dataRef, OSType dataRefType, Track *dstTrack)
  1128.  TWOWORDINLINE(0x7074, 0xAAAA);
  1129. extern pascal MovieEditState NewMovieEditState(Movie theMovie)
  1130.  THREEWORDINLINE(0x303C, 0x104, 0xAAAA);
  1131. extern pascal OSErr UseMovieEditState(Movie theMovie, MovieEditState toState)
  1132.  THREEWORDINLINE(0x303C, 0x105, 0xAAAA);
  1133. extern pascal OSErr DisposeMovieEditState(MovieEditState state)
  1134.  THREEWORDINLINE(0x303C, 0x106, 0xAAAA);
  1135. extern pascal TrackEditState NewTrackEditState(Track theTrack)
  1136.  THREEWORDINLINE(0x303C, 0x107, 0xAAAA);
  1137. extern pascal OSErr UseTrackEditState(Track theTrack, TrackEditState state)
  1138.  THREEWORDINLINE(0x303C, 0x108, 0xAAAA);
  1139. extern pascal OSErr DisposeTrackEditState(TrackEditState state)
  1140.  THREEWORDINLINE(0x303C, 0x109, 0xAAAA);
  1141. extern pascal OSErr AddTrackReference(Track theTrack, Track refTrack, OSType refType, long *addedIndex)
  1142.  THREEWORDINLINE(0x303C, 0x1F0, 0xAAAA);
  1143. extern pascal OSErr DeleteTrackReference(Track theTrack, OSType refType, long index)
  1144.  THREEWORDINLINE(0x303C, 0x1F1, 0xAAAA);
  1145. extern pascal OSErr SetTrackReference(Track theTrack, Track refTrack, OSType refType, long index)
  1146.  THREEWORDINLINE(0x303C, 0x1F2, 0xAAAA);
  1147. extern pascal Track GetTrackReference(Track theTrack, OSType refType, long index)
  1148.  THREEWORDINLINE(0x303C, 0x1F3, 0xAAAA);
  1149. extern pascal OSType GetNextTrackReferenceType(Track theTrack, OSType refType)
  1150.  THREEWORDINLINE(0x303C, 0x1F4, 0xAAAA);
  1151. extern pascal long GetTrackReferenceCount(Track theTrack, OSType refType)
  1152.  THREEWORDINLINE(0x303C, 0x1F5, 0xAAAA);
  1153. extern pascal OSErr ConvertFileToMovieFile(const FSSpec *inputFile, const FSSpec *outputFile, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp, MovieProgressUPP proc, long refCon)
  1154.  THREEWORDINLINE(0x303C, 0x1CB, 0xAAAA);
  1155. extern pascal OSErr ConvertMovieToFile(Movie theMovie, Track onlyTrack, FSSpec *outputFile, OSType fileType, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp)
  1156.  THREEWORDINLINE(0x303C, 0x1CC, 0xAAAA);
  1157. extern pascal TimeValue TrackTimeToMediaTime(TimeValue value, Track theTrack)
  1158.  THREEWORDINLINE(0x303C, 0x96, 0xAAAA);
  1159. extern pascal Fixed GetTrackEditRate(Track theTrack, TimeValue atTime)
  1160.  THREEWORDINLINE(0x303C, 0x123, 0xAAAA);
  1161. extern pascal long GetMovieDataSize(Movie theMovie, TimeValue startTime, TimeValue duration)
  1162.  THREEWORDINLINE(0x303C, 0x98, 0xAAAA);
  1163. extern pascal long GetTrackDataSize(Track theTrack, TimeValue startTime, TimeValue duration)
  1164.  THREEWORDINLINE(0x303C, 0x149, 0xAAAA);
  1165. extern pascal long GetMediaDataSize(Media theMedia, TimeValue startTime, TimeValue duration)
  1166.  THREEWORDINLINE(0x303C, 0x99, 0xAAAA);
  1167. extern pascal Boolean PtInMovie(Movie theMovie, Point pt)
  1168.  THREEWORDINLINE(0x303C, 0x9A, 0xAAAA);
  1169. extern pascal Boolean PtInTrack(Track theTrack, Point pt)
  1170.  THREEWORDINLINE(0x303C, 0x9B, 0xAAAA);
  1171. extern pascal void SetMovieLanguage(Movie theMovie, long language)
  1172.  THREEWORDINLINE(0x303C, 0x9C, 0xAAAA);
  1173. extern pascal OSErr GetUserData(UserData theUserData, Handle data, OSType udType, long index)
  1174.  THREEWORDINLINE(0x303C, 0x9E, 0xAAAA);
  1175. extern pascal OSErr AddUserData(UserData theUserData, Handle data, OSType udType)
  1176.  THREEWORDINLINE(0x303C, 0x9F, 0xAAAA);
  1177. extern pascal OSErr RemoveUserData(UserData theUserData, OSType udType, long index)
  1178.  THREEWORDINLINE(0x303C, 0xA0, 0xAAAA);
  1179. extern pascal short CountUserDataType(UserData theUserData, OSType udType)
  1180.  THREEWORDINLINE(0x303C, 0x14B, 0xAAAA);
  1181. extern pascal long GetNextUserDataType(UserData theUserData, OSType udType)
  1182.  THREEWORDINLINE(0x303C, 0x1A5, 0xAAAA);
  1183. extern pascal OSErr GetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index)
  1184.  THREEWORDINLINE(0x303C, 0x126, 0xAAAA);
  1185. extern pascal OSErr SetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index)
  1186.  THREEWORDINLINE(0x303C, 0x12E, 0xAAAA);
  1187. extern pascal OSErr AddUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag)
  1188.  THREEWORDINLINE(0x303C, 0x14C, 0xAAAA);
  1189. extern pascal OSErr GetUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag)
  1190.  THREEWORDINLINE(0x303C, 0x14D, 0xAAAA);
  1191. extern pascal OSErr RemoveUserDataText(UserData theUserData, OSType udType, long index, short itlRegionTag)
  1192.  THREEWORDINLINE(0x303C, 0x14E, 0xAAAA);
  1193. extern pascal OSErr NewUserData(UserData *theUserData)
  1194.  THREEWORDINLINE(0x303C, 0x12F, 0xAAAA);
  1195. extern pascal OSErr DisposeUserData(UserData theUserData)
  1196.  THREEWORDINLINE(0x303C, 0x130, 0xAAAA);
  1197. extern pascal OSErr NewUserDataFromHandle(Handle h, UserData *theUserData)
  1198.  THREEWORDINLINE(0x303C, 0x131, 0xAAAA);
  1199. extern pascal OSErr PutUserDataIntoHandle(UserData theUserData, Handle h)
  1200.  THREEWORDINLINE(0x303C, 0x132, 0xAAAA);
  1201. extern pascal void GetMediaNextInterestingTime(Media theMedia, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1202.  THREEWORDINLINE(0x303C, 0x16D, 0xAAAA);
  1203. extern pascal void GetTrackNextInterestingTime(Track theTrack, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1204.  THREEWORDINLINE(0x303C, 0xE2, 0xAAAA);
  1205. extern pascal void GetMovieNextInterestingTime(Movie theMovie, short interestingTimeFlags, short numMediaTypes, const OSType *whichMediaTypes, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration)
  1206.  THREEWORDINLINE(0x303C, 0x10E, 0xAAAA);
  1207. extern pascal OSErr CreateMovieFile(const FSSpec *fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resRefNum, Movie *newmovie)
  1208.  THREEWORDINLINE(0x303C, 0x191, 0xAAAA);
  1209. extern pascal OSErr OpenMovieFile(const FSSpec *fileSpec, short *resRefNum, char perms)
  1210.  THREEWORDINLINE(0x303C, 0x192, 0xAAAA);
  1211. extern pascal OSErr CloseMovieFile(short resRefNum)
  1212.  THREEWORDINLINE(0x303C, 0xD5, 0xAAAA);
  1213. extern pascal OSErr DeleteMovieFile(const FSSpec *fileSpec)
  1214.  THREEWORDINLINE(0x303C, 0x175, 0xAAAA);
  1215. extern pascal OSErr NewMovieFromFile(Movie *theMovie, short resRefNum, short *resId, StringPtr resName, short newMovieFlags, Boolean *dataRefWasChanged)
  1216.  THREEWORDINLINE(0x303C, 0xF0, 0xAAAA);
  1217. extern pascal OSErr NewMovieFromHandle(Movie *theMovie, Handle h, short newMovieFlags, Boolean *dataRefWasChanged)
  1218.  THREEWORDINLINE(0x303C, 0xF1, 0xAAAA);
  1219. extern pascal OSErr NewMovieFromDataFork(Movie *theMovie, short fRefNum, long fileOffset, short newMovieFlags, Boolean *dataRefWasChanged)
  1220.  THREEWORDINLINE(0x303C, 0x1B3, 0xAAAA);
  1221. extern pascal OSErr NewMovieFromUserProc(Movie *m, short flags, Boolean *dataRefWasChanged, GetMovieUPP getProc, void *refCon, Handle defaultDataRef, OSType dataRefType)
  1222.  THREEWORDINLINE(0x303C, 0x1EC, 0xAAAA);
  1223. extern pascal OSErr AddMovieResource(Movie theMovie, short resRefNum, short *resId, const StringPtr resName)
  1224.  THREEWORDINLINE(0x303C, 0xD7, 0xAAAA);
  1225. extern pascal OSErr UpdateMovieResource(Movie theMovie, short resRefNum, short resId, const StringPtr resName)
  1226.  THREEWORDINLINE(0x303C, 0xD8, 0xAAAA);
  1227. extern pascal OSErr RemoveMovieResource(short resRefNum, short resId)
  1228.  THREEWORDINLINE(0x303C, 0x176, 0xAAAA);
  1229. extern pascal Boolean HasMovieChanged(Movie theMovie)
  1230.  THREEWORDINLINE(0x303C, 0xD9, 0xAAAA);
  1231. extern pascal void ClearMovieChanged(Movie theMovie)
  1232.  THREEWORDINLINE(0x303C, 0x113, 0xAAAA);
  1233. extern pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSType dataRefType)
  1234.  THREEWORDINLINE(0x303C, 0x1C1, 0xAAAA);
  1235. extern pascal OSErr GetMovieDefaultDataRef(Movie theMovie, Handle *dataRef, OSType *dataRefType)
  1236.  THREEWORDINLINE(0x303C, 0x1D2, 0xAAAA);
  1237. extern pascal OSErr SetMovieColorTable(Movie theMovie, CTabHandle ctab)
  1238.  THREEWORDINLINE(0x303C, 0x205, 0xAAAA);
  1239. extern pascal OSErr GetMovieColorTable(Movie theMovie, CTabHandle *ctab)
  1240.  THREEWORDINLINE(0x303C, 0x206, 0xAAAA);
  1241. extern pascal void FlattenMovie(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resId, const StringPtr resName)
  1242.  THREEWORDINLINE(0x303C, 0x19B, 0xAAAA);
  1243. extern pascal Movie FlattenMovieData(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags)
  1244.  THREEWORDINLINE(0x303C, 0x19C, 0xAAAA);
  1245. extern pascal void SetMovieProgressProc(Movie theMovie, MovieProgressUPP p, long refcon)
  1246.  THREEWORDINLINE(0x303C, 0x19A, 0xAAAA);
  1247. extern pascal HandlerError GetVideoMediaGraphicsMode(MediaHandler mh, long *graphicsMode, RGBColor *opColor)
  1248.  FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A);
  1249. extern pascal HandlerError SetVideoMediaGraphicsMode(MediaHandler mh, long graphicsMode, const RGBColor *opColor)
  1250.  FIVEWORDINLINE(0x2F3C, 0x8, 0x102, 0x7000, 0xA82A);
  1251. extern pascal HandlerError GetSoundMediaBalance(MediaHandler mh, short *balance)
  1252.  FIVEWORDINLINE(0x2F3C, 0x4, 0x101, 0x7000, 0xA82A);
  1253. extern pascal HandlerError SetSoundMediaBalance(MediaHandler mh, short balance)
  1254.  FIVEWORDINLINE(0x2F3C, 0x2, 0x102, 0x7000, 0xA82A);
  1255. enum  {
  1256.     txtProcDefaultDisplay        = 0,
  1257.     txtProcDontDisplay            = 1,
  1258.     txtProcDoDisplay            = 2
  1259. };
  1260.  
  1261. typedef pascal OSErr (*TextMediaProcPtr)(Handle theText, Movie theMovie, short *displayFlag, long refcon);
  1262.  
  1263. enum {
  1264.     uppTextMediaProcInfo = kPascalStackBased
  1265.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1266.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle)))
  1267.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Movie)))
  1268.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*)))
  1269.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  1270. };
  1271.  
  1272. #if USESROUTINEDESCRIPTORS
  1273. typedef UniversalProcPtr TextMediaUPP;
  1274.  
  1275. #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon)        \
  1276.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTextMediaProcInfo, (theText), (theMovie), (displayFlag), (refcon))
  1277. #define NewTextMediaProc(userRoutine)        \
  1278.         (TextMediaUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextMediaProcInfo, GetCurrentISA())
  1279. #else
  1280. typedef TextMediaProcPtr TextMediaUPP;
  1281.  
  1282. #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon)        \
  1283.         (*(userRoutine))((theText), (theMovie), (displayFlag), (refcon))
  1284. #define NewTextMediaProc(userRoutine)        \
  1285.         (TextMediaUPP)(userRoutine)
  1286. #endif
  1287.  
  1288. extern pascal ComponentResult SetTextProc(MediaHandler mh, TextMediaUPP TextProc, long refcon)
  1289.  FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A);
  1290. extern pascal ComponentResult AddTextSample(MediaHandler mh, Ptr text, unsigned long size, short fontNumber, short fontSize, Style textFace, RGBColor *textColor, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1291.  FIVEWORDINLINE(0x2F3C, 0x34, 0x102, 0x7000, 0xA82A);
  1292. extern pascal ComponentResult AddTESample(MediaHandler mh, TEHandle hTE, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1293.  FIVEWORDINLINE(0x2F3C, 0x26, 0x103, 0x7000, 0xA82A);
  1294. extern pascal ComponentResult AddHiliteSample(MediaHandler mh, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1295.  FIVEWORDINLINE(0x2F3C, 0x10, 0x104, 0x7000, 0xA82A);
  1296. enum  {
  1297.     findTextEdgeOK                = 1 << 0,
  1298.     findTextCaseSensitive        = 1 << 1,
  1299.     findTextReverseSearch        = 1 << 2,
  1300.     findTextWrapAround            = 1 << 3,
  1301.     findTextUseOffset            = 1 << 4
  1302. };
  1303.  
  1304. extern pascal ComponentResult FindNextText(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime, TimeValue *foundTime, TimeValue *foundDuration, long *offset)
  1305.  FIVEWORDINLINE(0x2F3C, 0x1A, 0x105, 0x7000, 0xA82A);
  1306. extern pascal ComponentResult HiliteTextSample(MediaHandler mh, TimeValue sampleTime, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor)
  1307.  FIVEWORDINLINE(0x2F3C, 0xC, 0x106, 0x7000, 0xA82A);
  1308. #define dropShadowOffsetType 'drpo'
  1309.  
  1310. #define dropShadowTranslucencyType 'drpt'
  1311.  
  1312. extern pascal ComponentResult SetTextSampleData(MediaHandler mh, void *data, OSType dataType)
  1313.  FIVEWORDINLINE(0x2F3C, 0x8, 0x107, 0x7000, 0xA82A);
  1314. extern pascal OSErr MovieSearchText(Movie theMovie, Ptr text, long size, long searchFlags, Track *searchTrack, TimeValue *searchTime, long *searchOffset)
  1315.  THREEWORDINLINE(0x303C, 0x207, 0xAAAA);
  1316. extern pascal void GetPosterBox(Movie theMovie, Rect *boxRect)
  1317.  THREEWORDINLINE(0x303C, 0x16F, 0xAAAA);
  1318. extern pascal void SetPosterBox(Movie theMovie, const Rect *boxRect)
  1319.  THREEWORDINLINE(0x303C, 0x170, 0xAAAA);
  1320. extern pascal RgnHandle GetMovieSegmentDisplayBoundsRgn(Movie theMovie, TimeValue time, TimeValue duration)
  1321.  THREEWORDINLINE(0x303C, 0x16C, 0xAAAA);
  1322. extern pascal RgnHandle GetTrackSegmentDisplayBoundsRgn(Track theTrack, TimeValue time, TimeValue duration)
  1323.  THREEWORDINLINE(0x303C, 0x16B, 0xAAAA);
  1324. extern pascal void SetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP uncoverProc, MovieRgnCoverUPP coverProc, long refcon)
  1325.  THREEWORDINLINE(0x303C, 0x179, 0xAAAA);
  1326. extern pascal OSErr GetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP *uncoverProc, MovieRgnCoverUPP *coverProc, long *refcon)
  1327.  THREEWORDINLINE(0x303C, 0x1DD, 0xAAAA);
  1328. extern pascal ComponentResult GetTrackStatus(Track theTrack)
  1329.  THREEWORDINLINE(0x303C, 0x172, 0xAAAA);
  1330. extern pascal ComponentResult GetMovieStatus(Movie theMovie, Track *firstProblemTrack)
  1331.  THREEWORDINLINE(0x303C, 0x173, 0xAAAA);
  1332. extern pascal ComponentInstance NewMovieController(Movie theMovie, const Rect *movieRect, long someFlags)
  1333.  THREEWORDINLINE(0x303C, 0x18A, 0xAAAA);
  1334. extern pascal void DisposeMovieController(ComponentInstance mc)
  1335.  THREEWORDINLINE(0x303C, 0x18B, 0xAAAA);
  1336. extern pascal void ShowMovieInformation(Movie theMovie, ModalFilterUPP filterProc, long refCon)
  1337.  THREEWORDINLINE(0x303C, 0x209, 0xAAAA);
  1338. extern pascal OSErr PutMovieOnScrap(Movie theMovie, long movieScrapFlags)
  1339.  THREEWORDINLINE(0x303C, 0x18C, 0xAAAA);
  1340. extern pascal Movie NewMovieFromScrap(long newMovieFlags)
  1341.  THREEWORDINLINE(0x303C, 0x18D, 0xAAAA);
  1342. extern pascal OSErr GetMediaDataRef(Media theMedia, short index, Handle *dataRef, OSType *dataRefType, long *dataRefAttributes)
  1343.  THREEWORDINLINE(0x303C, 0x197, 0xAAAA);
  1344. extern pascal OSErr SetMediaDataRef(Media theMedia, short index, Handle dataRef, OSType dataRefType)
  1345.  THREEWORDINLINE(0x303C, 0x1C9, 0xAAAA);
  1346. extern pascal OSErr SetMediaDataRefAttributes(Media theMedia, short index, long dataRefAttributes)
  1347.  THREEWORDINLINE(0x303C, 0x1CA, 0xAAAA);
  1348. extern pascal OSErr AddMediaDataRef(Media theMedia, short *index, Handle dataRef, OSType dataRefType)
  1349.  THREEWORDINLINE(0x303C, 0x198, 0xAAAA);
  1350. extern pascal OSErr GetMediaDataRefCount(Media theMedia, short *count)
  1351.  THREEWORDINLINE(0x303C, 0x199, 0xAAAA);
  1352. extern pascal void SetMoviePlayHints(Movie theMovie, long flags, long flagsMask)
  1353.  THREEWORDINLINE(0x303C, 0x1A1, 0xAAAA);
  1354. extern pascal void SetMediaPlayHints(Media theMedia, long flags, long flagsMask)
  1355.  THREEWORDINLINE(0x303C, 0x1A2, 0xAAAA);
  1356. enum  {
  1357.     preloadAlways                = 1L << 0,
  1358.     preloadOnlyIfEnabled        = 1L << 1
  1359. };
  1360.  
  1361. extern pascal void SetTrackLoadSettings(Track theTrack, TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints)
  1362.  THREEWORDINLINE(0x303C, 0x1E3, 0xAAAA);
  1363. extern pascal void GetTrackLoadSettings(Track theTrack, TimeValue *preloadTime, TimeValue *preloadDuration, long *preloadFlags, long *defaultHints)
  1364.  THREEWORDINLINE(0x303C, 0x1E4, 0xAAAA);
  1365. #ifdef __cplusplus
  1366. }
  1367. #endif
  1368.  
  1369. enum  {
  1370.     samplesAlreadyInMedia        = -2059,
  1371.     movieTextNotFound            = -2062
  1372. };
  1373.  
  1374. #define MovieControllerComponentType 'play'
  1375.  
  1376. typedef ComponentInstance MovieController;
  1377.  
  1378. enum  {
  1379.     mcActionIdle                = 1,
  1380.     mcActionDraw                = 2,
  1381.     mcActionActivate            = 3,
  1382.     mcActionDeactivate            = 4,
  1383.     mcActionMouseDown            = 5,
  1384.     mcActionKey                    = 6,
  1385.     mcActionPlay                = 8,
  1386.     mcActionGoToTime            = 12,
  1387.     mcActionSetVolume            = 14,
  1388.     mcActionGetVolume            = 15,
  1389.     mcActionStep                = 18,
  1390.     mcActionSetLooping            = 21,
  1391.     mcActionGetLooping            = 22,
  1392.     mcActionSetLoopIsPalindrome    = 23,
  1393.     mcActionGetLoopIsPalindrome    = 24,
  1394.     mcActionSetGrowBoxBounds    = 25,
  1395.     mcActionControllerSizeChanged = 26,
  1396.     mcActionSetSelectionBegin    = 29,
  1397.     mcActionSetSelectionDuration = 30,
  1398.     mcActionSetKeysEnabled        = 32,
  1399.     mcActionGetKeysEnabled        = 33,
  1400.     mcActionSetPlaySelection    = 34,
  1401.     mcActionGetPlaySelection    = 35,
  1402.     mcActionSetUseBadge            = 36,
  1403.     mcActionGetUseBadge            = 37,
  1404.     mcActionSetFlags            = 38,
  1405.     mcActionGetFlags            = 39,
  1406.     mcActionSetPlayEveryFrame    = 40,
  1407.     mcActionGetPlayEveryFrame    = 41,
  1408.     mcActionGetPlayRate            = 42,
  1409.     mcActionShowBalloon            = 43,
  1410.     mcActionBadgeClick            = 44,
  1411.     mcActionMovieClick            = 45,
  1412.     mcActionSuspend                = 46,
  1413.     mcActionResume                = 47,
  1414.     mcActionSetControllerKeysEnabled = 48,
  1415.     mcActionGetTimeSliderRect    = 49,
  1416.     mcActionMovieEdited            = 50,
  1417.     mcActionGetDragEnabled        = 51,
  1418.     mcActionSetDragEnabled        = 52
  1419. };
  1420.  
  1421. typedef short mcAction;
  1422.  
  1423. enum  {
  1424.     mcFlagSuppressMovieFrame    = 1 << 0,
  1425.     mcFlagSuppressStepButtons    = 1 << 1,
  1426.     mcFlagSuppressSpeakerButton    = 1 << 2,
  1427.     mcFlagsUseWindowPalette        = 1 << 3,
  1428.     mcFlagsDontInvalidate        = 1 << 4
  1429. };
  1430.  
  1431. enum  {
  1432.     mcPositionDontInvalidate    = 1 << 5
  1433. };
  1434.  
  1435. typedef unsigned long mcFlags;
  1436.  
  1437. typedef pascal Boolean (*MCActionFilterProcPtr)(MovieController mc, short *action, void *params);
  1438.  
  1439. enum {
  1440.     uppMCActionFilterProcInfo = kPascalStackBased
  1441.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1442.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController)))
  1443.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short*)))
  1444.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  1445. };
  1446.  
  1447. #if USESROUTINEDESCRIPTORS
  1448. typedef UniversalProcPtr MCActionFilterUPP;
  1449.  
  1450. #define CallMCActionFilterProc(userRoutine, mc, action, params)        \
  1451.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterProcInfo, (mc), (action), (params))
  1452. #define NewMCActionFilterProc(userRoutine)        \
  1453.         (MCActionFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterProcInfo, GetCurrentISA())
  1454. #else
  1455. typedef MCActionFilterProcPtr MCActionFilterUPP;
  1456.  
  1457. #define CallMCActionFilterProc(userRoutine, mc, action, params)        \
  1458.         (*(userRoutine))((mc), (action), (params))
  1459. #define NewMCActionFilterProc(userRoutine)        \
  1460.         (MCActionFilterUPP)(userRoutine)
  1461. #endif
  1462.  
  1463. typedef pascal Boolean (*MCActionFilterWithRefConProcPtr)(MovieController mc, short action, void *params, long refCon);
  1464.  
  1465. enum {
  1466.     uppMCActionFilterWithRefConProcInfo = kPascalStackBased
  1467.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1468.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController)))
  1469.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  1470.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  1471.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  1472. };
  1473.  
  1474. #if USESROUTINEDESCRIPTORS
  1475. typedef UniversalProcPtr MCActionFilterWithRefConUPP;
  1476.  
  1477. #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon)        \
  1478.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, (mc), (action), (params), (refCon))
  1479. #define NewMCActionFilterWithRefConProc(userRoutine)        \
  1480.         (MCActionFilterWithRefConUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, GetCurrentISA())
  1481. #else
  1482. typedef MCActionFilterWithRefConProcPtr MCActionFilterWithRefConUPP;
  1483.  
  1484. #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon)        \
  1485.         (*(userRoutine))((mc), (action), (params), (refCon))
  1486. #define NewMCActionFilterWithRefConProc(userRoutine)        \
  1487.         (MCActionFilterWithRefConUPP)(userRoutine)
  1488. #endif
  1489.  
  1490. enum  {
  1491.     mcInfoUndoAvailable            = 1 << 0,
  1492.     mcInfoCutAvailable            = 1 << 1,
  1493.     mcInfoCopyAvailable            = 1 << 2,
  1494.     mcInfoPasteAvailable        = 1 << 3,
  1495.     mcInfoClearAvailable        = 1 << 4,
  1496.     mcInfoHasSound                = 1 << 5,
  1497.     mcInfoIsPlaying                = 1 << 6,
  1498.     mcInfoIsLooping                = 1 << 7,
  1499.     mcInfoIsInPalindrome        = 1 << 8,
  1500.     mcInfoEditingEnabled        = 1 << 9
  1501. };
  1502.  
  1503. enum  {
  1504.     mcMenuUndo                    = 1,
  1505.     mcMenuCut                    = 3,
  1506.     mcMenuCopy                    = 4,
  1507.     mcMenuPaste                    = 5,
  1508.     mcMenuClear                    = 6
  1509. };
  1510.  
  1511. #ifdef __cplusplus
  1512. extern "C" {
  1513. #endif
  1514.  
  1515. extern pascal ComponentResult MCSetMovie(MovieController mc, Movie theMovie, WindowPtr movieWindow, Point where)
  1516.  FIVEWORDINLINE(0x2F3C, 0xC, 0x2, 0x7000, 0xA82A);
  1517. extern pascal Movie MCGetIndMovie(MovieController mc, short index)
  1518.  FIVEWORDINLINE(0x2F3C, 0x2, 0x5, 0x7000, 0xA82A);
  1519. #define MCGetMovie(mc) MCGetIndMovie(mc, 0)
  1520.  
  1521. extern pascal ComponentResult MCRemoveMovie(MovieController mc)
  1522.  FIVEWORDINLINE(0x2F3C, 0, 0x6, 0x7000, 0xA82A);
  1523. extern pascal ComponentResult MCIsPlayerEvent(MovieController mc, const EventRecord *e)
  1524.  FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A);
  1525. extern pascal ComponentResult MCSetActionFilter(MovieController mc, MCActionFilterUPP blob)
  1526.  FIVEWORDINLINE(0x2F3C, 0x4, 0x8, 0x7000, 0xA82A);
  1527. extern pascal ComponentResult MCDoAction(MovieController mc, short action, void *params)
  1528.  FIVEWORDINLINE(0x2F3C, 0x6, 0x9, 0x7000, 0xA82A);
  1529. extern pascal ComponentResult MCSetControllerAttached(MovieController mc, Boolean attach)
  1530.  FIVEWORDINLINE(0x2F3C, 0x2, 0xA, 0x7000, 0xA82A);
  1531. extern pascal ComponentResult MCIsControllerAttached(MovieController mc)
  1532.  FIVEWORDINLINE(0x2F3C, 0, 0xB, 0x7000, 0xA82A);
  1533. extern pascal ComponentResult MCSetControllerPort(MovieController mc, CGrafPtr gp)
  1534.  FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A);
  1535. extern pascal CGrafPtr MCGetControllerPort(MovieController mc)
  1536.  FIVEWORDINLINE(0x2F3C, 0, 0xD, 0x7000, 0xA82A);
  1537. extern pascal ComponentResult MCSetVisible(MovieController mc, Boolean visible)
  1538.  FIVEWORDINLINE(0x2F3C, 0x2, 0xE, 0x7000, 0xA82A);
  1539. extern pascal ComponentResult MCGetVisible(MovieController mc)
  1540.  FIVEWORDINLINE(0x2F3C, 0, 0xF, 0x7000, 0xA82A);
  1541. extern pascal ComponentResult MCGetControllerBoundsRect(MovieController mc, Rect *bounds)
  1542.  FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A);
  1543. extern pascal ComponentResult MCSetControllerBoundsRect(MovieController mc, const Rect *bounds)
  1544.  FIVEWORDINLINE(0x2F3C, 0x4, 0x11, 0x7000, 0xA82A);
  1545. extern pascal RgnHandle MCGetControllerBoundsRgn(MovieController mc)
  1546.  FIVEWORDINLINE(0x2F3C, 0, 0x12, 0x7000, 0xA82A);
  1547. extern pascal RgnHandle MCGetWindowRgn(MovieController mc, WindowPtr w)
  1548.  FIVEWORDINLINE(0x2F3C, 0x4, 0x13, 0x7000, 0xA82A);
  1549. extern pascal ComponentResult MCMovieChanged(MovieController mc, Movie m)
  1550.  FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A);
  1551. extern pascal ComponentResult MCSetDuration(MovieController mc, TimeValue duration)
  1552.  FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A);
  1553. extern pascal TimeValue MCGetCurrentTime(MovieController mc, TimeScale *scale)
  1554.  FIVEWORDINLINE(0x2F3C, 0x4, 0x16, 0x7000, 0xA82A);
  1555. extern pascal ComponentResult MCNewAttachedController(MovieController mc, Movie theMovie, WindowPtr w, Point where)
  1556.  FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A);
  1557. extern pascal ComponentResult MCDraw(MovieController mc, WindowPtr w)
  1558.  FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A);
  1559. extern pascal ComponentResult MCActivate(MovieController mc, WindowPtr w, Boolean activate)
  1560.  FIVEWORDINLINE(0x2F3C, 0x6, 0x19, 0x7000, 0xA82A);
  1561. extern pascal ComponentResult MCIdle(MovieController mc)
  1562.  FIVEWORDINLINE(0x2F3C, 0, 0x1A, 0x7000, 0xA82A);
  1563. extern pascal ComponentResult MCKey(MovieController mc, char key, long modifiers)
  1564.  FIVEWORDINLINE(0x2F3C, 0x6, 0x1B, 0x7000, 0xA82A);
  1565. extern pascal ComponentResult MCClick(MovieController mc, WindowPtr w, Point where, long when, long modifiers)
  1566.  FIVEWORDINLINE(0x2F3C, 0x10, 0x1C, 0x7000, 0xA82A);
  1567. extern pascal ComponentResult MCEnableEditing(MovieController mc, Boolean enabled)
  1568.  FIVEWORDINLINE(0x2F3C, 0x2, 0x1D, 0x7000, 0xA82A);
  1569. extern pascal long MCIsEditingEnabled(MovieController mc)
  1570.  FIVEWORDINLINE(0x2F3C, 0, 0x1E, 0x7000, 0xA82A);
  1571. extern pascal Movie MCCopy(MovieController mc)
  1572.  FIVEWORDINLINE(0x2F3C, 0, 0x1F, 0x7000, 0xA82A);
  1573. extern pascal Movie MCCut(MovieController mc)
  1574.  FIVEWORDINLINE(0x2F3C, 0, 0x20, 0x7000, 0xA82A);
  1575. extern pascal ComponentResult MCPaste(MovieController mc, Movie srcMovie)
  1576.  FIVEWORDINLINE(0x2F3C, 0x4, 0x21, 0x7000, 0xA82A);
  1577. extern pascal ComponentResult MCClear(MovieController mc)
  1578.  FIVEWORDINLINE(0x2F3C, 0, 0x22, 0x7000, 0xA82A);
  1579. extern pascal ComponentResult MCUndo(MovieController mc)
  1580.  FIVEWORDINLINE(0x2F3C, 0, 0x23, 0x7000, 0xA82A);
  1581. extern pascal ComponentResult MCPositionController(MovieController mc, const Rect *movieRect, const Rect *controllerRect, long someFlags)
  1582.  FIVEWORDINLINE(0x2F3C, 0xC, 0x24, 0x7000, 0xA82A);
  1583. extern pascal ComponentResult MCGetControllerInfo(MovieController mc, long *someFlags)
  1584.  FIVEWORDINLINE(0x2F3C, 0x4, 0x25, 0x7000, 0xA82A);
  1585. extern pascal ComponentResult MCSetClip(MovieController mc, RgnHandle theClip, RgnHandle movieClip)
  1586.  FIVEWORDINLINE(0x2F3C, 0x8, 0x28, 0x7000, 0xA82A);
  1587. extern pascal ComponentResult MCGetClip(MovieController mc, RgnHandle *theClip, RgnHandle *movieClip)
  1588.  FIVEWORDINLINE(0x2F3C, 0x8, 0x29, 0x7000, 0xA82A);
  1589. extern pascal ComponentResult MCDrawBadge(MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn)
  1590.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2A, 0x7000, 0xA82A);
  1591. extern pascal ComponentResult MCSetUpEditMenu(MovieController mc, long modifiers, MenuHandle mh)
  1592.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2B, 0x7000, 0xA82A);
  1593. extern pascal ComponentResult MCGetMenuString(MovieController mc, long modifiers, short item, Str255 aString)
  1594.  FIVEWORDINLINE(0x2F3C, 0xA, 0x2C, 0x7000, 0xA82A);
  1595. extern pascal ComponentResult MCSetActionFilterWithRefCon(MovieController mc, MCActionFilterWithRefConUPP blob, long refCon)
  1596.  FIVEWORDINLINE(0x2F3C, 0x8, 0x2D, 0x7000, 0xA82A);
  1597. #ifdef __cplusplus
  1598. }
  1599. #endif
  1600.  
  1601. enum  {
  1602.     kMCSetMovieSelect            = 0x2,
  1603.     kMCGetIndMovieSelect        = 0x5,
  1604.     kMCRemoveMovieSelect        = 0x6,
  1605.     kMCIsPlayerEventSelect        = 0x7,
  1606.     kMCSetActionFilterSelect    = 0x8,
  1607.     kMCDoActionSelect            = 0x9,
  1608.     kMCSetControllerAttachedSelect = 0xA,
  1609.     kMCIsControllerAttachedSelect = 0xB,
  1610.     kMCSetControllerPortSelect    = 0xC,
  1611.     kMCGetControllerPortSelect    = 0xD,
  1612.     kMCSetVisibleSelect            = 0xE,
  1613.     kMCGetVisibleSelect            = 0xF,
  1614.     kMCGetControllerBoundsRectSelect = 0x10,
  1615.     kMCSetControllerBoundsRectSelect = 0x11,
  1616.     kMCGetControllerBoundsRgnSelect = 0x12,
  1617.     kMCGetWindowRgnSelect        = 0x13,
  1618.     kMCMovieChangedSelect        = 0x14,
  1619.     kMCSetDurationSelect        = 0x15,
  1620.     kMCGetCurrentTimeSelect        = 0x16,
  1621.     kMCNewAttachedControllerSelect = 0x17,
  1622.     kMCDrawSelect                = 0x18,
  1623.     kMCActivateSelect            = 0x19,
  1624.     kMCIdleSelect                = 0x1A,
  1625.     kMCKeySelect                = 0x1B,
  1626.     kMCClickSelect                = 0x1C,
  1627.     kMCEnableEditingSelect        = 0x1D,
  1628.     kMCIsEditingEnabledSelect    = 0x1E,
  1629.     kMCCopySelect                = 0x1F,
  1630.     kMCCutSelect                = 0x20,
  1631.     kMCPasteSelect                = 0x21,
  1632.     kMCClearSelect                = 0x22,
  1633.     kMCUndoSelect                = 0x23,
  1634.     kMCPositionControllerSelect    = 0x24,
  1635.     kMCGetControllerInfoSelect    = 0x25,
  1636.     kMCSetClipSelect            = 0x28,
  1637.     kMCGetClipSelect            = 0x29,
  1638.     kMCDrawBadgeSelect            = 0x2A,
  1639.     kMCSetUpEditMenuSelect        = 0x2B,
  1640.     kMCGetMenuStringSelect        = 0x2C,
  1641.     kMCSetActionFilterWithRefConSelect = 0x2D
  1642. };
  1643.  
  1644. #ifdef __cplusplus
  1645. extern "C" {
  1646. #endif
  1647.  
  1648. extern pascal TimeBase NewTimeBase(void)
  1649.  THREEWORDINLINE(0x303C, 0xA5, 0xAAAA);
  1650. extern pascal void DisposeTimeBase(TimeBase tb)
  1651.  THREEWORDINLINE(0x303C, 0xB6, 0xAAAA);
  1652. extern pascal TimeValue GetTimeBaseTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1653.  THREEWORDINLINE(0x303C, 0xA6, 0xAAAA);
  1654. extern pascal void SetTimeBaseTime(TimeBase tb, const TimeRecord *tr)
  1655.  THREEWORDINLINE(0x303C, 0xA7, 0xAAAA);
  1656. extern pascal void SetTimeBaseValue(TimeBase tb, TimeValue t, TimeScale s)
  1657.  THREEWORDINLINE(0x303C, 0xA8, 0xAAAA);
  1658. extern pascal Fixed GetTimeBaseRate(TimeBase tb)
  1659.  THREEWORDINLINE(0x303C, 0xA9, 0xAAAA);
  1660. extern pascal void SetTimeBaseRate(TimeBase tb, Fixed r)
  1661.  THREEWORDINLINE(0x303C, 0xAA, 0xAAAA);
  1662. extern pascal TimeValue GetTimeBaseStartTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1663.  THREEWORDINLINE(0x303C, 0xAB, 0xAAAA);
  1664. extern pascal void SetTimeBaseStartTime(TimeBase tb, const TimeRecord *tr)
  1665.  THREEWORDINLINE(0x303C, 0xAC, 0xAAAA);
  1666. extern pascal TimeValue GetTimeBaseStopTime(TimeBase tb, TimeScale s, TimeRecord *tr)
  1667.  THREEWORDINLINE(0x303C, 0xAD, 0xAAAA);
  1668. extern pascal void SetTimeBaseStopTime(TimeBase tb, const TimeRecord *tr)
  1669.  THREEWORDINLINE(0x303C, 0xAE, 0xAAAA);
  1670. extern pascal long GetTimeBaseFlags(TimeBase tb)
  1671.  THREEWORDINLINE(0x303C, 0xB1, 0xAAAA);
  1672. extern pascal void SetTimeBaseFlags(TimeBase tb, long timeBaseFlags)
  1673.  THREEWORDINLINE(0x303C, 0xB2, 0xAAAA);
  1674. extern pascal void SetTimeBaseMasterTimeBase(TimeBase slave, TimeBase master, const TimeRecord *slaveZero)
  1675.  THREEWORDINLINE(0x303C, 0xB4, 0xAAAA);
  1676. extern pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  1677.  THREEWORDINLINE(0x303C, 0xAF, 0xAAAA);
  1678. extern pascal void SetTimeBaseMasterClock(TimeBase slave, Component clockMeister, const TimeRecord *slaveZero)
  1679.  THREEWORDINLINE(0x303C, 0xB3, 0xAAAA);
  1680. extern pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  1681.  THREEWORDINLINE(0x303C, 0xB0, 0xAAAA);
  1682. extern pascal void ConvertTime(TimeRecord *inout, TimeBase newBase)
  1683.  THREEWORDINLINE(0x303C, 0xB5, 0xAAAA);
  1684. extern pascal void ConvertTimeScale(TimeRecord *inout, TimeScale newScale)
  1685.  THREEWORDINLINE(0x303C, 0xB7, 0xAAAA);
  1686. extern pascal void AddTime(TimeRecord *dst, const TimeRecord *src)
  1687.  THREEWORDINLINE(0x303C, 0x10C, 0xAAAA);
  1688. extern pascal void SubtractTime(TimeRecord *dst, const TimeRecord *src)
  1689.  THREEWORDINLINE(0x303C, 0x10D, 0xAAAA);
  1690. extern pascal long GetTimeBaseStatus(TimeBase tb, TimeRecord *unpinnedTime)
  1691.  THREEWORDINLINE(0x303C, 0x10B, 0xAAAA);
  1692. extern pascal void SetTimeBaseZero(TimeBase tb, TimeRecord *zero)
  1693.  THREEWORDINLINE(0x303C, 0x128, 0xAAAA);
  1694. extern pascal Fixed GetTimeBaseEffectiveRate(TimeBase tb)
  1695.  THREEWORDINLINE(0x303C, 0x124, 0xAAAA);
  1696. extern pascal QTCallBack NewCallBack(TimeBase tb, short cbType)
  1697.  THREEWORDINLINE(0x303C, 0xEB, 0xAAAA);
  1698. extern pascal void DisposeCallBack(QTCallBack cb)
  1699.  THREEWORDINLINE(0x303C, 0xEC, 0xAAAA);
  1700. extern pascal short GetCallBackType(QTCallBack cb)
  1701.  THREEWORDINLINE(0x303C, 0xED, 0xAAAA);
  1702. extern pascal TimeBase GetCallBackTimeBase(QTCallBack cb)
  1703.  THREEWORDINLINE(0x303C, 0xEE, 0xAAAA);
  1704. extern pascal OSErr CallMeWhen(QTCallBack cb, QTCallBackUPP callBackProc, long refCon, long param1, long param2, long param3)
  1705.  THREEWORDINLINE(0x303C, 0xB8, 0xAAAA);
  1706. extern pascal void CancelCallBack(QTCallBack cb)
  1707.  THREEWORDINLINE(0x303C, 0xB9, 0xAAAA);
  1708. extern pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  1709.  THREEWORDINLINE(0x303C, 0x129, 0xAAAA);
  1710. extern pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  1711.  THREEWORDINLINE(0x303C, 0x12A, 0xAAAA);
  1712. extern pascal QTCallBack GetFirstCallBack(TimeBase tb)
  1713.  THREEWORDINLINE(0x303C, 0x12B, 0xAAAA);
  1714. extern pascal QTCallBack GetNextCallBack(QTCallBack cb)
  1715.  THREEWORDINLINE(0x303C, 0x12C, 0xAAAA);
  1716. extern pascal void ExecuteCallBack(QTCallBack cb)
  1717.  THREEWORDINLINE(0x303C, 0x12D, 0xAAAA);
  1718. extern pascal OSErr QueueSyncTask(QTSyncTaskPtr task)
  1719.  THREEWORDINLINE(0x303C, 0x203, 0xAAAA);
  1720. extern pascal OSErr DequeueSyncTask(QTSyncTaskPtr qElem)
  1721.  THREEWORDINLINE(0x303C, 0x204, 0xAAAA);
  1722. #ifdef __cplusplus
  1723. }
  1724. #endif
  1725.  
  1726. #if defined(powerc) || defined (__powerc)
  1727. #pragma options align=mac68k
  1728. #endif
  1729. struct MusicDescription {
  1730.     long                        size;
  1731.     long                        type;
  1732.     long                        resvd1;
  1733.     short                        resvd2;
  1734.     short                        dataRefIndex;
  1735.     long                        musicFlags;
  1736.     unsigned long                headerData[1];
  1737. };
  1738. #if defined(powerc) || defined(__powerc)
  1739. #pragma options align=reset
  1740. #endif
  1741.  
  1742. typedef struct MusicDescription MusicDescription;
  1743.  
  1744. typedef MusicDescription *MusicDescriptionPtr;
  1745.  
  1746. typedef MusicDescriptionPtr *MusicDescriptionHandle;
  1747.  
  1748. #endif
  1749.  
  1750.